Zavřeno. Tato otázka vyžaduje podrobnosti nebo jasnost. Momentálně nepřijímá odpovědi. Chcete tuto otázku vylepšit? Přidejte podrobnosti a objasněte problém úpravou tohoto příspěvku. Uzavřeno před 1 rokem. Vylepšete tuto otázku Dělám nějakou výzvu kódu a chci získat první 3 hodnoty z mého pole zadáním počátečního indexu a získáním pouze prvních (3 nebo může mít libovolnou délku) hodnot z počátečního indexu. Zkoušel jsem tento kód a funguje to, ale struktura kódu je příliš dlouhá, takže jak to mohu zkrátit, aby to bylo snadné pochopit. int n = 10; dvojitý podpis = nový dvojitý [] {1, 1, 1}; double [] ret = nový double [n]; dvojnásobný součet = 0; ret [0] = podpis [0]; ret [1] = podpis [1]; ret [2] = podpis [2]; int x, i; for (i = 0; i
2021-01-31 08:19:45
Pomocí LINQ můžete zkusit něco takového: hodnoty var = pole.Skip (index) .Take (n) .ToArray (); Kde index je index první položky an počet položek, které chcete vybrat. Např. https://dotnetfiddle.net/Pk1rwY Jako vedlejší poznámku. Použití LINQ neznamená, že by váš kód byl rychlejší. Bylo by to kompaktnější / čitelnější atd. Abyste mohli posoudit, jak výkonný je váš kód, musíte použít něco jako BenchmarkDotNet. | Žádné řešení Linq: soukromý statický T [] extrakt(zdroj T [], int fromIndex, délka int) { if (null == zdroj) hodit novou ArgumentNullException (nameof (source)); else if (fromIndex <0) hodit novou ArgumentOutOfRangeException (nameof (fromIndex), „Z indexu musí být nezáporné“); jinak if (délka <0) hodit novou ArgumentOutOfRangeException (nameof (length), „Délka musí být nezáporná“); if (fromIndex> = source.Length || length == 0) vrátit nové T [0]; T [] result = new T [Math.Min (length, source.Length - fromIndex)]; Array.Copy (source, fromIndex, result, 0, result.Length); vrátit výsledek; } Pak double [] podpis = nový double [] {0, 1, 2, 3, 4, 5}; double [] ret = Výpis (podpis, 3, 2); Console.Write (string.Join (",", ret)); Výsledek: 3, 4 | Z vaší otázky musíte využít operátory .Take a .Skip. var result = array.Skip (startingIndex) .Take (numberOfElements); Z vašeho kódu se tedy zdá, že se snažíte udělat něco trochu jiného, a to sčítání prvků. Zde může pomoci operátor .Sum. | Toto není odpověď, kterou hledáte? Přečtěte si další otázky týkající se značek c # arrays linq nebo položte vlastní otázku.